package com.ren.service;

import com.ren.constants.AppConstants;
import com.ren.frame.MarkdownEditorPane;
import java.awt.*;

/**
 * Markdown编辑器工具类
 * 提供Markdown编辑相关的辅助功能
 */
public class MarkdownEditorHelper {

    /**
     * 设置文本区域为Markdown编辑模式
     * @param textPane Markdown文本面板
     */
    public static void setupMarkdownFeatures(MarkdownEditorPane textPane) {
        // 设置基本样式
        textPane.setFont(new Font(AppConstants.FONT_NAME, Font.PLAIN, AppConstants.FONT_SIZE));
        textPane.setEditable(false);
        textPane.setBackground(Color.WHITE);
    }

    /**
     * 为文本添加完成标记（删除线样式）
     * @param textPane Markdown文本面板
     * @param start 起始位置
     * @param end 结束位置
     */
    public static void markAsCompleted(MarkdownEditorPane textPane, int start, int end) {
        try {
            // 使用 getText() 和 setText() 方法替代 StyledDocument 操作
            String text = textPane.getText();
            String beforeText = text.substring(0, start);
            String selectedText = text.substring(start, end);
            String afterText = text.substring(end);

            // 添加删除线标记
            String newText = beforeText + "~~" + selectedText + "~~" + afterText;
            textPane.setText(newText);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 添加新的列表项到文本末尾
     * @param textPane Markdown文本面板
     */
    public static void addNewListItem(MarkdownEditorPane textPane) {
        try {
            String content = textPane.getText();

            // 计算下一个序号
            int nextNumber = 1;
            String[] lines = content.split("\n");
            for (int i = lines.length - 1; i >= 0; i--) {
                if (lines[i].matches("\\d+\\.\\s.*")) {
                    nextNumber = Integer.parseInt(lines[i].split("\\.")[0]) + 1;
                    break;
                }
            }

            // 在末尾添加新项目
            String newListItem = "\n" + nextNumber + ". ";
            textPane.insert(newListItem, content.length());
            textPane.setCaretPosition(content.length() + newListItem.length());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 初始化有序列表
     * @param textPane Markdown文本面板
     */
    public static void initializeOrderedList(MarkdownEditorPane textPane) {
        textPane.setText("1. ");
        textPane.setCaretPosition(textPane.getText().length());
    }
}
